package agencia;

import java.util.Date;
import java.util.List;

import agencia.exceptions.DuplicadoException;
import agencia.exceptions.InexistenteException;

public class ExcursionDiaCompleto implements ExcursionDecorador {

	private Excursion 	excursion 		= null;
	private float 		costoAlmuerzo 	= 0;
	private float		costoMerienda	= 0;	
	private Long		idExcursion;
	private Long 		id;
	
	
	public ExcursionDiaCompleto(Excursion excursion) {
		super();
		this.excursion = excursion;
	}

	public ExcursionDiaCompleto() {
		excursion = new ExcursionMedioDia();
	}

	public float getCostoAlmuerzo() {
		return costoAlmuerzo;
	}

	public void setCostoAlmuerzo(float costoAlmuerzo) {
		this.costoAlmuerzo = costoAlmuerzo;
	}

	public float getCostoMerienda() {
		return costoMerienda;
	}

	public void setCostoMerienda(float costoMerienda) {
		this.costoMerienda = costoMerienda;
	}

	@Override
	public void agregarServicio(Servicio servicio) throws DuplicadoException {
		excursion.agregarServicio(servicio);		
	}

	@Override
	public int getCategoria() {
		return excursion.getCategoria();
	}

	@Override
	public Date getFecha() {
		return excursion.getFecha();
	}

	@Override
	public Lugar getLugar() {
		return excursion.getLugar();
	}

	@Override
	public String getNombre() {
		return excursion.getNombre();
	}

	@Override
	public float getPrecioExcursion() {
		float aux = getCostoAlmuerzo() + getCostoMerienda();
		
		return excursion.getPrecioExcursion() + aux;
	}

	@Override
	public float getPrecioServicios() {
		return excursion.getPrecioServicios();
	}

	@Override
	public List<Servicio> getServicios() {
		return excursion.getServicios();
	}

	@Override
	public void quitarServicio(Servicio servicio) throws InexistenteException {
		excursion.quitarServicio(servicio);		
	}

	@Override
	public void setCategoria(int categoria) {
		excursion.setCategoria(categoria);
	}

	@Override
	public void setFecha(Date fecha) {
		excursion.setFecha(fecha);		
	}

	@Override
	public void setLugar(Lugar lugar) {
		excursion.setLugar(lugar);
	}

	@Override
	public void setNombre(String nombre) {
		excursion.setNombre(nombre);
	}

	@Override
	public float getPrecioBasico() {
		return excursion.getPrecioBasico();
	}

	@Override
	public void setPrecioBasico(float precio) {
		excursion.setPrecioBasico(precio);		
	}

	public String getTipoPadre() {
		
		return "ExcursionDiaCompleto";
	}

	@Override
	public Long getId() {
		return this.id;
	}

	@Override
	public void setId(Long id) {
		
		this.id = id;
	}

	public Long getIdExcursion() {
		return idExcursion;
	}

	public void setIdExcursion(Long idExcursion) {
		this.idExcursion = idExcursion;
	}
	
	public String toString(){		
		return this.getNombre();
	}

	

}
